// ->ピ～ン音を2次IIRによる指数減衰で
//次:ピ～ン音を2相指数減衰で
const f=880;//"f"は周波数(Hz)
      T=0.2;//"T"は減衰時間(秒)
var
 fs,w,r, b1,b2, wk, y1,y:Double;
  i:Integer;
procedure Main();
begin
 fs:=cmd('fs');      // "fs"はサンプルレートでマウス右ボタンで設定出来ます
  w:=2*PI()*f/fs;
  r:=exp(-1.0/fs/T);
  b1:=2*cos(w)*r;
  b2:= -r*r;

  y1:=-sin(w)*$7f00;
  y:=0;
   for i:=1 to trunc(fs*T*9) do begin
    wk:= y;
    y := b1*y + b2*y1;
    y1:= wk;
    if not OutData(Trunc(y)) then exit;//GUIでF9を押せば途中ストップします
  end;
end;
{

最初のサイン波発生よりもループ中の掛け算は１回増えていますね。

}